package com.maxwell.googleplay.base;

import java.util.List;
import java.util.Map;

import com.maxwell.googleplay.base.LoadingPager.LoadedResult;
import com.maxwell.googleplay.utils.UIUtils;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

/**
 * @author yue
 * @创建时间 2016-3-30上午10:43:34
 * @描述 TODO
 * 
 */
public abstract class BaseFragment extends Fragment {

	private LoadingPager mLoadingPager;

	public LoadingPager getLoadingPager() {
		return mLoadingPager;
	}

	@Override
	public View onCreateView(LayoutInflater inflater,
			@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

		if (mLoadingPager == null) {//第一次执行
			mLoadingPager = new LoadingPager(UIUtils.getContext()) {

				@Override
				public LoadedResult initData() {

					return BaseFragment.this.initData();

				}

				@Override
				public View initSuccessView() {

					return BaseFragment.this.initSuccessView();
				}
			};
		}else{//第二次执行
			
			((ViewGroup)mLoadingPager.getParent()).removeView(mLoadingPager);
		}
		return mLoadingPager;
	}

	/**
	 * @desc 必须实现，但是不知道具体实现，定义成抽象方法，让子类实现,是loadingpager的同名方法
	 * 
	 * @call
	 */
	public abstract LoadedResult initData();

	/**
	 * @desc 必须实现，但是不知道具体实现，定义成抽象方法，让子类实现,是loadingpager的同名方法
	 * @return 返回成功视图
	 * 
	 * @call 加载数据完成并且加载成功后调用
	 */
	public abstract View initSuccessView();
	
	
	/**
	 * @param obj 网络数据json化之后的对象
	 * @return  
	 */
	public LoadedResult checkState(Object obj){
		if(obj == null){
			return LoadedResult.EMPTY;
		}
		
		//list	
		if(obj instanceof List){
			if(((List) obj).size() == 0){
				return LoadedResult.EMPTY;
			}
		}
		
		//map
		if(obj instanceof Map){
			if(((Map) obj).size() == 0){
				return LoadedResult.EMPTY;
			}
		}	
		
		return LoadedResult.SUCCESS;
	}
	
	
}
